package org.redmagic.location;

import java.util.Properties;
import java.util.Set;

import javax.annotation.Nonnull;
import javax.annotation.ParametersAreNonnullByDefault;

import org.redmagic.PostProcessor;

/**
 * A {@link Location} is any external resource that can be used
 * to determine placeholder values.  A {@link Location} can use
 * whatever means available to it to determine the values.  Some 
 * examples of a {@link Location} are the command line, files on
 * a filesystem, a website, etc.
 * 
 * @author sean
 *
 */
@ParametersAreNonnullByDefault
public interface Location extends PostProcessor<Properties> {

	@Nonnull
	Properties resolvePlaceholders(Set<String> placeholders);
}